﻿<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"
    CodeFile="Triggers.aspx.cs" Inherits="Lessons_Triggers" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    <link href="../Style/LessonsStyle.css" rel="stylesheet" type="text/css" />
    Тригери<br />
    Съдържание<ul>
        <li>Какво представляват Тритерите</li>
        <li>Улсловни стилове с тригери</li>
        <li>Property trigger</li>
        <li>Multiple trigger</li>
        <li>Data trigger</li>
        <li>Event trigger</li>
    </ul>
    <div>
        <p>
            Какво представляват Тритерите
        </p>
        <p>
            <span>Тригерите позволяват на програмиста да изпълнява своий деиствия без код. Пример
                за подобни действивия са когато се променя стойността на някои е пропърти без да
                се пише код от разработчика. Също така могат да се автоматизират прости промени
                по стиловете като са поставенив момемнта.Тригерите могат да се link-ват към стиловете
                чрез колекцията Style.Triggers Важна особенност е че всеки стил може да има неуграничен
                брой тригери.</span>
        </p>
        <p>
            <span>Съществуват три основни типа стиллове: </span>
            <ul>
                <li>Property triggers - извиква се когато стойността или депенденси пропърти се промени</li>
                <li>Data triggers - работи при data binding наблюдава примените в информацията.</li>
                <li>Event triggers- извиква се когато някои routed event е извикан.</li>
            </ul>
        </p>
    </div>
    <div>
        <p>
            Улсловни стилове с тригери
        </p>
        <p>
            <span>Тригерите са начина по които се wrap-ват един или повече Setter елементи в condition.
                Ако условието е истина то тогава Setter елемента ще се изпълни. Когато увсловието
                стане false тогава се връщат стойностите.</span>
        </p>
    </div>
    <div>
        <p>
            Property trigger
        </p>
        <p>
            <span>Наблюдава за dependence property на елемента за определена стойност и изпълнява
                колекция от Setters.</span>
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                            &lt;Window x:Class=&quot;PropertyTriggers.PropertyTriggersWindow&quot;<br />
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
    Title=&quot;Property Triggers&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;<br />
    &lt;Grid Height=&quot;273&quot; Width=&quot;287&quot;&gt;<br />
        &lt;Button Margin=&quot;111.107,106.754,0,116.246&quot; HorizontalAlignment=&quot;Left&quot; Width=&quot;70&quot;&gt;Click me&lt;/Button&gt;<br />
    &lt;/Grid&gt;<br />
&lt;/Window&gt;<br />

                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </div>
    <div>
        <p>
            Multiple trigger
        </p>
        <p>
            <span>Можем да зададем колкото се може повече пропъртита като property trigger. Може
                да се използва и Style.Trigger елемента за да се съберат заедно multiple triggers.
            </span>
            
        </p>
        <p>
            Мulticondition Property trigger</p>
        <p>
            <span>Когато искаме да създадем тригер които наблюдава за няколко критерия дали са изпълнени.
                Multicondition тригера наблюдава не само за едно за всички условия да са изълнени.</span>    <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                            &lt;Window x:Class=&quot;MulticonditionPropertyTriggers.MulticonditionPropertyWindow&quot;<br />
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
    Title=&quot;Multicondition Property Trigger&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;<br />
    &lt;Grid&gt;<br />
        &lt;Button x:Name=&quot;BigButton&quot; Margin=&quot;75,113,91,107&quot;&gt;Big Button&lt;/Button&gt;<br />
    &lt;/Grid&gt;<br />
&lt;/Window&gt;<br />

                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </div>
    <div>
        <p>
            Data trigger
        </p>
        <p>
            <span>Може да привери всяко нещо към което моге да се Bind-не. Използва се за проверка
                на пропъртита на обекти които не се показват на екарана но им се използва съдържанието.
                Ако съдържанието е null то трирера връща false</span>
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                            &lt;Window x:Class=&quot;DataTriggers.DataTriggersWindow&quot;<br />
    xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
    xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
    Title=&quot;Data Triggers&quot; Height=&quot;174&quot; Width=&quot;361&quot;&gt;<br />
    &lt;StackPanel Width=&quot;314&quot; Height=&quot;100&quot;&gt;<br />
        &lt;Label Height=&quot;28&quot; Name=&quot;label1&quot; Width=&quot;120&quot; FontSize=&quot;18&quot;&gt;Write color&lt;/Label&gt;<br />
        &lt;TextBox Margin=&quot;3&quot; Height=&quot;67&quot; FontSize=&quot;32&quot; /&gt;<br />
    &lt;/StackPanel&gt;<br />
&lt;/Window&gt;<br />

                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </div>
    <div>
        <p>
            Event trigger
        </p>
        <p>
            <span>За разлика от обикновенните тригери които наблъдават стойността на някое пропърти
                то event triggers съблъдават за специфични евенти които са се вдигнали. Тези тригери
                се нуждаят от серия от действия които променят контола. Най-често се изпозват за
                анимация. В ѝАМЛ всяка анимация трябва да бъде дединирана в storyboard които предоставя
                timeline за анимацията. В storyboard-а трябва да се денирират animation обектите.
            </span>
            <table border="1">
                <tbody>
                    <tr>
                        <td>
                            <div class="Code">
                                &lt;Window x:Class=&quot;EventTriggers.EventTriggersWindow&quot;<br />
                                xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;<br />
                                xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;<br />
                                Title=&quot;Event Triggers&quot; Height=&quot;300&quot; Width=&quot;300&quot;&gt;<br />
                                &lt;Button Height=&quot;79&quot; Name=&quot;BigFontButtonStyle&quot; Width=&quot;193&quot;&gt;I'm
                                smart button&lt;/Button&gt;<br />
                                &lt;/Window&gt;<br />
                            </div>
                        </td>
                    </tr>
                </tbody>
            </table>
        </p>
    </div>
</asp:Content>
